如何在python中实现自定义函数中的“位置参数”? | 您所在的位置:网站首页 › python 函数def › 如何在python中实现自定义函数中的“位置参数”? |
python3.8在PEP 570被接受之后添加了位置参数特性,在函数签名的文档中发现该特性之前,该特性指示函数不接受任何关键字参数。函数定义中正斜杠(/)之前的参数仅用于定位,后跟斜杠(/)的参数可以是语法规定的任何类型。其中,参数仅根据调用函数时的位置Map到仅用于定位的参数。通过关键字(name)传递仅用于定位的参数无效。下面的示例显示了仅包含位置参数的函数定义 def foo(a, b, / , x, y): print("positional ", a, b) print("positional or keyword", x, y)在上面的函数定义中,参数a和b只能作为位置参数传递,而x或y可以是位置参数或关键字。以下函数调用有效 foo(40, 20, 99, 39) foo(40, 3.14, "hello", y="world") foo(1.45, 3.14, x="hello", y="world")以下函数调用将引发异常TypeError,因为a和be作为关键字参数传递。 foo(a=1.45, b=3.14, x=1, y=4)TypeError:foo()获取了一些作为关键字参数传递的仅限位置的参数:“甲、B”通过在函数定义中添加正斜杠(/)作为最后一个参数,可以定义一个只接受位置参数的函数。 def pow(x, y, /): return x ** y在上面的函数定义中,所有参数(x和y)都是位置参数。这里,按名称传递参数是无效的,这将导致TypeError。pow(2, 3); pow(3, 9)有效,而pow(x=3, y=9)无效,这将引发TypeError |
CopyRight 2018-2019 实验室设备网 版权所有 |